namespace graver.CodeAnalysis.Syntax;

/// <summary>
/// Token 类型
/// </summary>
public enum SyntaxKind
{
    /// <summary>
    /// 字面量表达式
    /// </summary>
    BadToken,

    /// <summary>
    /// 文件尾
    /// </summary>
    EndOfFileToken,

    /// <summary>
    /// 数字
    /// </summary>
    NumberToken,

    /// <summary>
    /// 空白字符
    /// </summary>
    SpaceToken,

    /// <summary>
    /// +
    /// </summary>
    PlusToken,

    /// <summary>
    /// -
    /// </summary>
    MinusToken,

    /// <summary>
    /// *
    /// </summary>
    StarToken,

    /// <summary>
    /// /
    /// </summary>
    SlashToken,

    /// <summary>
    /// (
    /// </summary>
    OpenParenthesisToken,

    /// <summary>
    /// )
    /// </summary>
    CloseParenthesisToken,

    /// <summary>
    /// !
    /// </summary>
    BangToken,

    /// <summary>
    /// &&
    /// </summary>
    AmpersandAmpersandToken,

    /// <summary>
    /// ||
    /// </summary>
    PipePipeToken,

    /// <summary>
    /// ==
    /// </summary>
    EqualsEqualsToken,

    /// <summary>
    /// !=
    /// </summary>
    BangEqualsToken,

    /// <summary>
    /// 标识符
    /// </summary>
    IdentifierToken,

    /* 关键字 */
    /// <summary>
    /// true
    /// </summary>
    KeyWordTrue,

    /// <summary>
    /// false
    /// </summary>
    KeyWordFalse,


    /// <summary>
    /// 语法树数字节点
    /// </summary>
    LiteralExpression,

    /// <summary>
    /// 一元表达式
    /// </summary>
    UnaryExpression,

    /// <summary>
    /// 语法树节点
    /// </summary>
    BinaryExpression,

    /// <summary>
    /// 带括号的语法树节点
    /// </summary>
    ParenthesizeExpression
}
